封装
- 把客观事物封装成抽象的类,隐藏对象的属性和实现细节,仅对外公开访问方法,控制在程序中属性的读和写的访问级别
- 隐藏信息和实现细节
- 类内部的结构可以自由修改
- 可以对成员进行更精确的控制(权限修饰符)
- 提高内部成员数据的安全性
- 良好的封装能够减少耦合
继承
- 继承是一种复用代码的方式。能够按照现有类的类型来创建新类,在无需改变现有类形式的情况下,采用现有类的形式并在其中添加代码
- 当创建一个类时,总是在继承,除非已明确指出要从其他类中继承,否则就是隐式地从Java的标准根类Object进行继承
- 当创建了一个导出类对象时,该对象包含了一个基类的子对象(这个子对象与用基类直接创建的对象是一样的,但是被包装在导出类对象内部)
- 对基类子对象正确初始化的唯一方法:在构造器中调用基类构造器来执行初始化。基类在导出类构造器可以访问它之前就已经完成了初始化,即使不为导出类创建构造器,编译器也会生成一个默认的调用基类构造器的构造器
- 如果没有默认的基类构造器,或者想调用一个带参数的基类构造器,必须用关键字super显式地编写调用基类构造器的语句,并且配以适当的参数列表
(如果没有默认基类构造器,只有一个带参数的基类构造器,则调用基类构造器必须是在导出构造器中要做的第一件事,否则编译器会提示找不到无参数基类构造器(这可能是曾经被要求创建带参数构造器也必须创建无参数构造器的主要原因)) - protected关键字,对于任何继承于此类的导出类或其他任何位于同一个包内的类是可以访问的(protected提供了包内访问权限)
多态
- 不同类的对象对同一消息做出不同的行为,即同一消息可以根据发送对象的不同而采取多种不同的行为方式
- 多态的作用是消除类型之间的耦合关系(多态将接口和实现分离出来),这改善了代码的组织结构和可读性,还能创建可扩展的程序
- 实现多态的技术:动态绑定(后期绑定、运行时绑定)——在运行时能判断对象的类型,从而调用恰当的方法(因为向上转型的运用,所以需要在运行时判断对象的类型)。
- 缺陷:
- "覆盖"私有方法:private方法被自动认为是final方法,而且对导出类是屏蔽的(Java中除了static方法和final方法之外,其他方法都是后期绑定 的,private方法属于final方法)
- 域和静态方法:只有普通的调用方法可以是多态的,任何域访问操作都将由编译器解析,因此不是多态的
(以上内容是在说,final方法(private方法属于final方法)、static方法和任何域访问操作都不是多态的,因为它们无法运用后期绑定技术)